package compiladorareas;

import java_cup.runtime.*;

/**Calcular el area de cuadrado, rectangulo y triangulo
Ejemplo:  variable valorvariable operador reservado
lado 3 calcular cuadrado*/

%%
%class AnalizadorLexico

%line
%column
%cup
//Compatibilidad con analizadores sintacticos
%{
//public String tipo;

    private Symbol symbol(int type) {
        return new Symbol(type, yyline, yycolumn);
    }

    private Symbol symbol(int type, Object value) {
        return new Symbol(type, yyline, yycolumn, value);
    }

    private void manejarE(){
    	try{

    		throw new Error("A ingresado un caracter ilegal ==> <"+yytext()+">"+"linea "+yyline+" Columna "+yycolumn);
    	}catch(java.lang.Error ex){
    		System.err.println(ex.getMessage());
    	}
    }

%}
A=[a-zA-Z]
N=[0-9]+[0-9]*
WHITE=[ \t\n\r]

%%

<YYINITIAL>{
{WHITE} {/**Ignore*/}
"Calcular"|"calcular" {return symbol(sym.OPERADOR);}
{N} { return symbol(sym.VALORVARIABLE, new Integer(yytext()));}
"Cuadrado"|"cuadrado" {return symbol(sym.CUADRADO);}
"Triangulo"|"triangulo" { return symbol(sym.TRIANGULO);} 
"Rectangulo"|"rectangulo" { return symbol(sym.RECTANGULO);}
"," {return symbol(sym.SEPARACION);}
[^] {  manejarE();}
}
